import java.util.Scanner;

public class demo {



//    小易的升级之路
// 小易经常沉迷于网络游戏.有一次,他在玩一个打怪升级的游戏,他的角色的初始能力值为 a.在接下来的一段时间内,
// 他将会依次遇见n个怪物,每个怪物的防御力为b1,b2,b3...bn. 如果遇到的怪物防御力bi小于等于小易的当前能力值c,
// 那么他就能轻松打败怪物,并且使得自己的能力值增加bi;如果bi大于c,那他也能打败怪物,但他的能力值只能增加bi
// 与c的最大公约数.那么问题来了,在一系列的锻炼后,小易的最终能力值为多少?

    // 求最大公约数
    public static int div(int a, int b) {
        // 进来a就小于等于b
        int r = a % b;
        while (r != 0) {
            a = b;
            b = r;
            r = a % b;
        }
        return b;
    }
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while (in.hasNextInt()) {
            int n = in.nextInt();//小怪波数
            int a = in.nextInt();//小易的能力
            int[] arr = new int[n];
            for (int i = 0; i < n; i++) {
                arr[i] = in.nextInt();
            }

            for(int i = 0; i < n; i++) {
                if (a >= arr[i]) {
                    a += arr[i];
                }else {
                    a += div(arr[i], a);
                }
            }
            System.out.println(a);
        }
    }









    //    找出字符串中第一个只出现一次的字符△
    public static void main1(String[] args) {
        Scanner in = new Scanner(System.in);
        String str = in.nextLine();
        char[] ch = str.toCharArray();
        int[] s = new int[128];//用ASCCI表示所以字符
        for (int i = 0; i < ch.length; i++) {
            s[ch[i]]++;
        }
        int i = 0;
        for (; i < ch.length; i++) {
            if (s[ch[i]] == 1) {
                System.out.println(ch[i]);
                break;
            }
        }
        if (i == ch.length) {
            System.out.println(-1);
        }
    }
}

